package com.book.controller;

import com.book.entity.Cart;
import com.book.service.CartService;
import com.book.utils.ResponseResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
/**
 * @author yicheng
 */
//所有路径都不能匿名访问
@RestController
@RequestMapping("/cart")
public class CartController {

    @Autowired
    private CartService cartService;

    @PostMapping("/addCart")
    public ResponseResult addCart(@RequestBody Cart cart) {
//        System.out.println(cart);
        return cartService.addCart(cart);
    }

    //根据用户id获取购物车信息
    @GetMapping("/getCarts")
    public ResponseResult getCarts(@RequestParam String userId){
        return cartService.getCarts(userId);
    }

    /**
     * 注意这里的删除方法传入的是一个数组
     * @param cartIds 传入需要删除的购物车的id数组，相当于可以同时删除多个购物车
     * @return 返回对应的删除信息
     */
    @PostMapping("/deleteCarts")
    public ResponseResult deleteCarts(@RequestBody List<Integer> cartIds){
        if(cartIds == null || cartIds.isEmpty()){
            return new ResponseResult(2004,"批量删除失败，请检查是否包含参数");
        }
        return cartService.deleteCartByIds(cartIds);
    }

    //根据购物车的id删除某一个购物车
    @GetMapping("/deleteCart")
    public ResponseResult deleteCart(@RequestParam int id){
        return cartService.deleteCartById(id);
    }

    //批量购买，传入购物车id数组和地址id，此时service层里面现根据这个去获取对应的信息，然后再放入订单表中，同时要把购物车表中的对应删除
    /**
     * 注意这里的批量购买方法传入的是一个 购物车id的数组，  地址id，
     * @param cartIds 传入需要购买的的购物车的id数组，相当于可以同时购买多个购物车
     * @return 返回对应的删除信息
     */
    @PostMapping("/buyCarts")
    public ResponseResult buyCarts(@RequestParam int addressId,@RequestBody List<Integer> cartIds){
        if(cartIds == null || cartIds.isEmpty()){
            return new ResponseResult(2006,"批量购买失败，请检查参数参数是否正确");
        }
        return cartService.buyCartByIds(addressId, cartIds);
    }

    //单独购买
    @GetMapping("/buyCart")
    public ResponseResult buyCart(@RequestParam int addressId,@RequestParam int id){
        return cartService.buyCartById(addressId, id);
    }

    /**
     * 在详情界面直接点击购买，不用去购物车中购买
     * @param addressId 地址id
     * @param cart 购物车信息
     * @return
     */
    @PostMapping("/buyCartDirect")
    public ResponseResult buyCartDirect(@RequestParam int addressId,@RequestBody Cart cart){

        return cartService.buyDirectly(cart, addressId);
    }
}
